iT邦幫忙

1

JS 標籤樣板字面值 DAY76

  • 分享至 

  • xImage
  •  

在我們使用 標籤樣板字面值 可解決 XSS攻擊
這裡我們先來介紹簡單的 標籤樣板字面值

依據在樣板字面值 所定義的 "變數" 作為分段點
第一段: 你好
第二段: ,歡迎光臨

function show(str,arg1){
    console.log(str,arg1);
}
const myName = '小黑';
show `你好${myName},歡迎光臨`;

https://ithelp.ithome.com.tw/upload/images/20201026/20123039LRp9kttglT.jpg


雖然變數${myname}後面沒有內容,但依然會算進去

function show(str,arg1){
    console.log(str,arg1);
}
const myName = '小黑';
show `你好${myName}`;

https://ithelp.ithome.com.tw/upload/images/20201026/20123039tt9GY0jytt.jpg

若使用多個變數 ,參數也要傳入多個

function show(str,arg1,arg2,arg3){
    console.log(str,arg1,arg2,arg3);
}
const myName = '小黑';
show `你好${myName},歡迎光臨 ${2} ${3}`;

https://ithelp.ithome.com.tw/upload/images/20201026/20123039nr2v7K9pCv.jpg

在不確定傳入的參數有幾個
可用其餘參數
會將傳入的參數以陣列方式呈現

function show(str,...arg){
    console.log(str,arg);
}
const myName = '小黑';
show `你好${myName},歡迎光臨 ${2} ${3}`;

https://ithelp.ithome.com.tw/upload/images/20201026/20123039ubJZCk09LH.jpg

這裡再舉一個複雜的例子

// 預期結果:  你好 <span> ${myName}</span>,歡迎光臨!
const myName = '小黑';
const highlight = (strings,...arg) =>
    strings.map((str,i)=> `${str} ${arg[i] ? `<span>${arg[i]}</span>` : ''}`).join('')
const sentence = highlight `你好${myName},歡迎光臨!`;
console.log(sentence);

使用三元運算子是因為
strings 有兩段(索引 0 1) 但變數只有一個
若沒有使用三元運算子
會變成下圖
https://ithelp.ithome.com.tw/upload/images/20201026/20123039exLUsQmYV5.jpg

這裡提供一篇 join 方法的文章
https://aiirly.com/2019/07/js-join/
那今天的介紹就到這裡
若有任何問題 或 內容有誤
都可以跟我說唷/images/emoticon/emoticon41.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言